package com.example.shuiyin.service;

import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

public interface StorageService {
    /**
     * 存储文件并返回访问URL
     */
    String store(MultipartFile file, String path);
    
    /**
     * 获取文件的预签名URL
     */
    String getPreSignedUrl(String objectName);
    
    /**
     * 删除文件
     */
    void delete(String objectName);

    /**
     * 加载文件作为资源
     */
    Resource loadFileAsResource(String filePath);

    /**
     * 保存处理结果
     */
    String saveResult(String filePath, Long userId);

    /**
     * 删除临时文件
     */
    void deleteTempFile(String filePath);

    /**
     * 从文件路径上传文件到存储并返回访问URL
     * @param filePath 文件路径
     * @param fileName 文件名
     * @param objectName 对象名称
     * @return 文件访问URL
     * @throws IOException 如果上传过程中发生I/O错误
     */
    String uploadFile(String filePath, String fileName, String objectName) throws IOException;
    
    /**
     * 上传MultipartFile文件并返回访问URL
     * @param file 上传的文件
     * @param objectName 对象名称
     * @return 文件访问URL
     * @throws IOException 如果上传过程中发生I/O错误
     */
    String uploadFile(MultipartFile file, String objectName) throws IOException;
} 